package com.fortune.service;

import com.fortune.dto.in.BackReturnOrder.ReturnOrderAddDto;
import com.fortune.dto.in.BackReturnOrder.ReturnOrderDetailAddDto;
import com.fortune.dto.in.BackReturnOrder.ReturnOrderEditDto;
import com.fortune.vo.BackReturnOrder.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BackReturnOrderService {
    /**
     * 后台经销商退押金工单列表
     * @param did
     * @param returnOrderListDto
     * @return List<ReturnOrder>
     */
    List<ReturnOrder> findReturnOrderList(@Param("did") String did,
                                          @Param("returnOrderListDto") ReturnOrderListDto returnOrderListDto);

    /**
     * 后台经销商退押金工单列表总条数
     * @param did
     * @return
     */
    Integer returnOrderListCount(@Param("did") String did,
                                 @Param("returnOrderListDto") ReturnOrderListDto returnOrderListDto);

    /**
     * 查询开单人是经销商的名字
     * @param createUser
     * @return
     */
    String findJXSName(@Param("createUser") String createUser,
                       @Param("did") String did);

    /**
     * 查询开单人是经销商的名字
     * @param createUser
     * @return
     */
    String findKHName(@Param("createUser") String createUser);

    /**
     * 批准人
     * @param allowUser
     * @return
     */
    String findKDRName(@Param("allowUser") String allowUser,
                       @Param("did") String did);

    /**
     * 司机
     * @param boxDriver
     * @return
     */
    String findSJName(@Param("boxDriver") String boxDriver,
                      @Param("did") String did);

    /**
     * 库房验收人
     * @param storeUser
     * @return
     */
    String findKFName(@Param("storeUser") String storeUser,
                      @Param("did") String did);

    /**
     * 查询退押金工单详情
     * @param did
     * @param clientId
     * @param orderId
     * @return
     */
    List<ReturnOrderDetail> findReturnOrderDetailList(@Param("did") String did,
                                                      @Param("clientId") String clientId,
                                                      @Param("orderId") String orderId);

    /**
     * 添加退押金工单
     * @param did
     * @param id
     * @param returnOrderAddDto
     * @return
     */
    int addReturnOrder(@Param("did") String did,
                       @Param("id") String id,
                       @Param("returnOrderAddDto") ReturnOrderAddDto returnOrderAddDto);

    /**
     * 单独添加详情
     * @param did
     * @param returnOrderDetailAddDto
     * @return
     */
    int addRedturnOrderDetails(@Param("did") String did,
                               @Param("returnOrderDetailAddDto") ReturnOrderDetailAddDto returnOrderDetailAddDto);

    /**
     * 编辑退押金工单
     * @param did
     * @param returnOrderEditDto
     * @return
     */
    int editReturnOrder(@Param("did") String did,
                        @Param("returnOrderEditDto") ReturnOrderEditDto returnOrderEditDto);

    /**
     * 删除退押金工单
     * @param did
     * @param orderId
     * @return
     */
    int deleteRrturnOrder(@Param("did") String did,
                          @Param("orderId") String orderId,
                          @Param("clientId") String clientId);

    /**
     * 批准退押金
     * @param did
     * @param orderId
     * @return
     */
    int approvedReturnOrder(@Param("did") String did,
                            @Param("orderId") String orderId,@Param("id")String id,@Param("driverId")String driverId);

    /**
     * 查询客户列表
     * @param did
     * @return
     */
    List<ClientList> findClientList(@Param("did") String did);

    /**
     * 获取客户手机号
     * @param clientId
     * @return
     */
    String findClientPhone(@Param("clientId") String clientId);

    /**
     * 查询经销商自营的商品
     * @param did
     * @return
     */
    List<Product> findProductListByD(@Param("did") String did);

    /**
     * 查询当前经销商对应的所有厂商
     * @param did
     * @return
     */
    List<MID> findMid(@Param("did") String did);

    /**
     * 查询经销商所对应的所有厂商
     * @param mid
     * @return
     */
    List<Product> findProductListByM(@Param("mid") String mid);

    /**
     * 查询当前客户购买过的商品id
     * @param did
     * @param clientId
     * @return
     */
    List<ProductId> findProductIdList(@Param("did") String did,
                                      @Param("clientId") String clientId);

    /**
     * 查询商品信息
     * @param mid
     * @param productId
     * @return
     */
    Product findProduct(@Param("mid") String mid,
                        @Param("productId") String productId);

    /**
     * 查询厂商简称
     * @return
     */
    String findAbbreviation(@Param("mid") String mid);
}
